在Day01的時候我們知道IoC有兩層意思,而Spring中的IoC指的是物件控制權的轉移。在了解控制權移轉前我們先看一個例子,以下是一個LoginService,在做登入驗證的時候會調用多個Service,new物件的工作會在我們手上。現在我們將這個工作(控制權)交給了容器(container),讓container管理物件的創建與調用。
LoginService{
EmailService emailService;
LogService logService;
UserService userService;
public loginValidate(String username,String password){
//密碼錯誤時寄信給使用者
emailService = new EmailService();
//紀錄使用者操作
logService = new LogService();
//作為取得使用者資訊
userService = new UserService();
}
}
由於物件受到container的管理,它知道哪個物件在使用時需要另一個物件,此時容器透過反射的方式將容器中的EmailService、LogService、UserService物件注入到LoginService中,以下是注入的例子。
LoginService{
@Autowired
EmailService emailService;
@Autowired
LogService logService;
@Autowired
UserService userService;
public loginValidate(String username,String password){
//注入的Service就可以直接調用囉
}
}
參考網址
從官網的圖可以清楚知道,Container就是透過設定檔與POJO設定完成進到Container管理,設定方式有xml與註解的方式